import { ARR_METHODS } from "./confg";
import { observeArr } from "./observeArr";


// 重写数组方法
var originArrMethods = Array.prototype
var arrMethods = Object.create(originArrMethods); // 创建数组原型对象


ARR_METHODS.map(function(m){
    arrMethods[m] = function(){
        var args = Array.prototype.slice.call(arguments); // 将 arguments 转换为数组
        var rt = originArrMethods[m].apply(this,args) // 调用原数组方法

        // 获取新添加的元素
        var newArr;
        switch(m){
            case 'push':
            case 'unshift':
                newArr = args; // args 是新添加的元素
                break;
            case 'splice':
                newArr = args.slice(2); // args 是新添加的元素
                break;
            default:
                break;
        }
        // 对新添加的元素进行监听
        if(newArr){
            observeArr(newArr);
        }
        return rt;
    }
})

export {
    arrMethods
}